\chapter{Introduction}

Historically, the accountability of software engineers has not been an issue of
concern for three reasons. First, software was originally used only by experts
and corporations for limited and specific purposes beyond the reaches of end
users and the general public \cite{Leveson95}. Second, processor instruction 
sets were primitive and software programs were very simple \cite{Storey95}. 
Finally, the availability of attorneys with applicable expertise to handle 
software cases has been rare \cite{Armour93}. Today's society no longer observes
these limitations.

Today, software is no longer limited to specialty uses. Organizations are in the
business of building better products faster, cheaper, and more efficiently. As a
result of society's demands, these organizations find themselves increasingly
relying on software for the benefits of rapid deployment and efficiency over
traditionally engineered physical components. Over the years, software has
almost become an ideal product. Software can be created quickly and easily.
There are little to no material costs associated with producing software and
there is no deterioration over time. It can be replicated cheaply once written
and, since the inception of the Internet, it is more mutable (e.g. updateable)
than ever. By now, computers have progressed to the point where using software
in solutions not only possible, but more economically feasible than using solely
hardware components \cite{Baase97}. Software is oftentimes the only feasible
alternative for solving certain problems.

Complexity of software programs has also increased. Significant work in
programming only began in the 1950s, and mainstream software use didn't begin
until recently. But over time, knowledge of software has grown exponentially
and with developments like higher-level programming languages, object-oriented
design, and open source libraries, the complexity of software has equally
increased.

Thirdly, the number of computer-savvy attorneys is growing. In 1974, the
American Bar Association formed the Science \& Technology Law section to provide
a forum for addressing issues at the intersection of law, science, and
technology. The section now has over 10,000 members. 10 of the 23 committees
within the section are devoted to E-Commerce and IT Law, focussing on issues
including computer law and cyber crime \cite{SCITECH}. Representation of
computer science and other related undergraduate majors in law schools is also
growing\footnote{Dr. Clark Turner, a computer science professor at the
California Polytechnic State University (Cal Poly) has seen at least one
computer science graduate apply to law school during his recent years of
teaching.}.

With these factors mitigated, society will encounter legal disputes involving
software. Our culture continues to use software in risky situations and software
engineers are at least partly (if not mostly or even wholly) responsible for
determining whether or not the software is ready for use. Microprocessors and
software are being used to control prosthetic limbs \cite{Graupe78}, to help
restore sight to the blind \cite{Fox95}, to automate the braking systems in cars
\cite{Hurtig94}, and even to treat cancer patients with radiation 
\cite{Leveson93}. Because of the rising use of software, its increased 
complexity in implementation, and growth of qualified professionals, the risk of
accidents resulting in a legal complaint will appear. But society has not yet
dealt with the full implications of liability for software related accidents.

We focus our research on software testing, one of the key techniques for quality
assurance. Are the processes that we use to test software legally sufficient in
fulfilling our responsibilities as professionals? How does one \textit{decide}
whether or not they are? After laying a foundation of knowledge in Chapte
\ref{C:Background}, we can tightly define this ``\textit{deciding}'' problem in
Chapter \ref{C:Motivation} and propose a solution in Chapter \ref{C:Software}.
